namespace CloudStorage.API.Messages
{
	/// <summary>
	/// The entry point of the queue storage API
	/// </summary>
	public interface IQueueStorageAccount : ICloudStorageAccount
	{
		/// <summary>
		/// Get a reference to a Queue object with a specified name. 
		/// </summary>
		/// <param name="queueName">The name of the queue</param>    
		void CreateQueue(string queueName);

		/// <summary>
		/// Creates a queue in the specified storage account.
		/// </summary>
		/// <param name="queueAlreadyExists">true if a queue with the same name already exists.</param>
		/// <param name="queueName">The name of the queue</param>
		void CreateQueue(string queueName, out bool queueAlreadyExists);

		/// <summary>
		/// Lists the queues within the account.
		/// </summary>
		/// <returns>A list of queues</returns>        
		IListResponse<IQueueListItem> ListQueues();

		/// <summary>
		/// Lists the queues within the account that start with the given prefix.
		/// </summary>
		/// <param name="prefix">If prefix is null returns all queues.</param>
		/// <returns>A list of queues.</returns>        
		IListResponse<IQueueListItem> ListQueues(string prefix);
	}
}